package Controleur;

import gui.FenetrePrincipale;
import gui.modificationSejour.*;

import java.awt.event.ActionEvent;

import javax.swing.JOptionPane;

import model.Agenda;
import model.CatalogueChambre;
import model.LigneSejour;
import model.Sejour;

public class ControleurChangerChambre implements AbstractControleur {
	public static final int SELECTIONNER_CHAMBRE = 100;
	public static final int MODIFIER_CHAMBRE = 110;
	public static final int SELECTIONNER_SEJOUR = 200;
	public static final int SELECTIONNER_CHAMBRE_MOD = 210;
	public static final int MODIFIER_SEJOUR = 220;
	public static final int CHAMBRE_SELECTIONNEE = 300;
	public static final int ANNULER = 999;
	
	private AbstractControleur parent;
	private FenetrePrincipale fenetreActive;
	private Sejour tempSejour;
	private int chambreChoisi,
				nouvelleChambreSelectionnee;
	
		@Override
	public void initSysteme(AbstractControleur ctrl) {
		parent = ctrl;
		fenetreActive = new FenetreChoisirChambre(this);
	}

		@Override
	public void actionPerformed(ActionEvent e) {
			String action = e.getActionCommand();
			switch(Integer.parseInt(action)){
			case SELECTIONNER_CHAMBRE:
				chambreChoisi = ((FenetreChoisirChambre)fenetreActive).getChambreChoisi();
				((FenetreChoisirChambre)fenetreActive).setModifier(true);
				break;
			case MODIFIER_CHAMBRE:
				tempSejour = Agenda.getInstance().touverSejour(CatalogueChambre.getInstance().get(chambreChoisi));
				if (tempSejour == null){
					JOptionPane.showMessageDialog(null, "Il n'y a pas de sejour assigne a cette chambre.", "Erreur", JOptionPane.ERROR_MESSAGE);
					((FenetreChoisirChambre)fenetreActive).setModifier(false);
				} else {
					fenetreActive.close();
					fenetreActive = new FenetreDetailSejour(this,tempSejour);
					((FenetreDetailSejour)fenetreActive).remplirListeChambre(chambreChoisi);
				}
				break;
			case CHAMBRE_SELECTIONNEE:
				nouvelleChambreSelectionnee = ((FenetreDetailSejour)fenetreActive).getChambreSelectionnee();
				((FenetreDetailSejour)fenetreActive).setModifier(true);
				break;
			case MODIFIER_SEJOUR:
				((FenetreDetailSejour)fenetreActive).modifierChambre(nouvelleChambreSelectionnee);
				((FenetreDetailSejour)fenetreActive).remplirListeChambre(chambreChoisi);
				break;
			case ANNULER:
				fenetreActive.close();
				parent.reloadCtrl();
				break;
			}
	}

		@Override
	public void reloadCtrl() {
		// TODO Auto-generated method stub

	}

}
